class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定，请勿修改，直接返回方法规定的值即可
     *
     * 
     * @param s string字符串 
     * @return int整型
     */
    int StrToInt(string s) {
        size_t i = 0;
        size_t len = s.size();
        if(len <= 0) return 0;
        // 判断第一个非空字符是否为负
        bool isneg = false;
        while(s[i] == ' '){
            ++i;
        }
        if(s[i] == '-' || s[i] == '+'){
            if(s[i] == '-') isneg = true;
            ++i;
        }else{
            // 不符合数字串格式
            if(s[i] > '9' || s[i] < '0')
                return 0;
        }
        // 保存数字串
        string num;
        for(; i < len && s[i] <= '9' && s[i] >= '0'; ++i){
            num += s[i];
        }
        // 去掉数字串前导 0
        auto it = num.begin();
        while(*it == '0'){
            num.erase(it);
        }
        // 超出整形范围直接返回边界值
        if(num.size() > 10){
            if(isneg) return INT_MAX*-1 - 1;
            else return INT_MAX;
        } 
        // 转整形
        int digit = 1;
        long long res = 0;
        for(int j = num.size()-1; j >= 0; --j){
            res += (num[j]-'0') * digit;
            digit *= 10;
            if(res > INT_MAX){
                res = INT_MAX;
                if(isneg) res += 1;
                break;
            }
            cout << res << endl;
        }
        if(isneg) res *= -1;
       
        return (int)res;
    }
};